home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / GRAPHICS / TS32 / UNIT1.PAS < prev    next >
Pascal/Delphi Source File  |  1996-03-14  |  2KB  |  102 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, HiResTimer, ColorPalette, SpriteEngine, DIBDrawingSurface,
  8.   Explosion, Sprite, PolygonSprite, Missile;
  9.  
  10. type
  11.   TfrmMain = class(TForm)
  12.     board: TDIBDrawingSurface;
  13.     missiles: TSpriteEngine;
  14.     squares: TSpriteEngine;
  15.     explosions: TSpriteEngine;
  16.     palette: TColorPalette;
  17.     timerMain: THiResTimer;
  18.     Button1: TButton;
  19.     Button2: TButton;
  20.     procedure timerMainTimer(Sender: TObject);
  21.     procedure FormShow(Sender: TObject);
  22.     procedure boardCustomPaint(Sender: TObject);
  23.     procedure missilesCollision(Sender: TObject; Sprite,
  24.       TargetSprite: TSprite);
  25.     procedure Button1Click(Sender: TObject);
  26.     procedure Button2Click(Sender: TObject);
  27.   private
  28.     function RandomPos: TPoint;
  29.   public
  30.   end;
  31.  
  32. var
  33.   frmMain: TfrmMain;
  34.  
  35. implementation
  36.  
  37. {$R *.DFM}
  38.  
  39. procedure TfrmMain.timerMainTimer(Sender: TObject);
  40. begin
  41.   board.DIBRefresh;
  42. end;
  43.  
  44. procedure TfrmMain.FormShow(Sender: TObject);
  45. begin
  46.   Randomize;
  47.   timerMain.Enabled := TRUE;
  48. end;
  49.  
  50. procedure TfrmMain.boardCustomPaint(Sender: TObject);
  51. begin
  52.   squares.ProcessSprites;
  53.   missiles.ProcessSprites;
  54.   explosions.ProcessSprites;
  55.   squares.RenderSprites;
  56.   missiles.RenderSprites;
  57.   explosions.RenderSprites;
  58.   missiles.CollisionDetection( squares );
  59. end;
  60.  
  61. procedure TfrmMain.missilesCollision(Sender: TObject; Sprite,
  62.   TargetSprite: TSprite);
  63. var
  64.   expl: TExplosion;
  65. begin
  66.   expl := TExplosion.CreateExplosion( Sprite.Position, 60, Random( 255 ) );
  67.   explosions.AddSprite( expl );
  68.   squares.RemoveSprite( TargetSprite );
  69.   missiles.RemoveSprite( Sprite );
  70. end;
  71.  
  72. procedure TfrmMain.Button1Click(Sender: TObject);
  73. var
  74.   s: TSquareSprite;
  75. begin
  76.   s := TSquareSprite.CreatePolygonSprite( Random( 255 ) );
  77.   s.Position := RandomPos;
  78.   s.Destination := RandomPos;
  79.   s.Speed := Random( 20 );
  80.   s.SpinSpeed := Random( 20 );
  81.   s.Spin := TRotation( Random( Ord( High( TRotation ) ) + 1 ) );
  82.   s.MotionType := mtContinuous;
  83.   squares.AddSprite( s );
  84. end;
  85.  
  86. function TfrmMain.RandomPos: TPoint;
  87. begin
  88.   Result := Point( Random( board.Width ), Random( board.Height ) );
  89. end;
  90.  
  91. procedure TfrmMain.Button2Click(Sender: TObject);
  92. var
  93.   m: TMissile;
  94. begin
  95.   m := TMissile.CreateMissile( 200, Random( 255 ) );
  96.   m.Position := RandomPos;
  97.   m.Destination := RandomPos;
  98.   missiles.AddSprite( m );
  99. end;
  100.  
  101. end.
  102.